export default function nestTokens(tokens){
    // 存放结果集
    let nestedTokens = []
    // 栈结构，用于存放遇到 # 或者 / 的 token
    let sections = []
    // 收集器，利用引用的特性, 天生指向 nestedTokens
    let collector = nestedTokens

    for(let token of tokens){
        switch(token[0]){
            case '#':
                // 入栈
                collector.push(token)
                sections.push(token)
                // 改变 collector 收集器的指向
                collector = token[2] = []
                break;
            case '/':
                // 出栈
                let section_pop = sections.pop()
                // 出栈后，判断 sections 是否还有 token 。有，指向栈顶的 token ; 否则指向 nestedTokens结果集
                collector = sections.length > 0 ? sections[sections.length - 1][2] : nestedTokens
                break;
            default:
                collector.push(token)
        }
    }

    return nestedTokens;
}